/*
 * Copyright (c) 2024-2025 Huawei Device Co., Ltd.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */


// WARNING! THIS FILE IS AUTO-GENERATED, DO NOT MAKE CHANGES, THEY WILL BE LOST ON NEXT GENERATION!

import { int32, int64, float32 } from "@koalaui/common"
import { KInt, KPointer, KBoolean, KStringPtr, wrapCallback, NativeBuffer } from "@koalaui/interop"
import { NodeAttach, remember } from "@koalaui/runtime"
import { TextOverflow, FontStyle, FontWeight, TextAlign, TextCase, CopyOptions, TextHeightAdaptivePolicy, WordBreak, LineBreakStrategy, EllipsisMode, TextSelectableMode } from "./ArkEnumsInterfaces"
import { Resource } from "./ArkResourceInterfaces"
import { CommonMethod, ShadowOptions, CustomBuilder } from "./ArkCommonInterfaces"
import { Font, ResourceColor, Length } from "./ArkUnitsInterfaces"
import { LengthMetrics } from "./ArkLengthMetricsMaterialized"
import { DecorationStyleInterface } from "./ArkStyledStringInterfaces"
import { Callback_String_Void, Callback_Number_Number_Void } from "./SyntheticDeclarations"
import { TextDataDetectorConfig, FontSettingOptions } from "./ArkTextCommonInterfaces"
import { EditMenuOptions } from "./ArkEditMenuOptionsMaterialized"
import { SelectionMenuOptions } from "./ArkRichEditorInterfaces"
import { TextController } from "./ArkTextControllerMaterialized"
export interface TextOverflowOptions {
    overflow: TextOverflow;
}
export type TextInterface = (content?: string | Resource, value?: TextOptions) => TextAttribute;
export interface TextAttribute extends CommonMethod<TextAttribute> {
    font: Font;
    fontColor: ResourceColor;
    fontSize: number | string | Resource;
    minFontSize: number | string | Resource;
    maxFontSize: number | string | Resource;
    minFontScale: number | Resource;
    maxFontScale: number | Resource;
    fontStyle: FontStyle;
    fontWeight: number | FontWeight | string;
    lineSpacing: LengthMetrics;
    textAlign: TextAlign;
    lineHeight: number | string | Resource;
    textOverflow: TextOverflowOptions;
    fontFamily: string | Resource;
    maxLines: number;
    decoration: DecorationStyleInterface;
    letterSpacing: number | string;
    textCase: TextCase;
    baselineOffset: number | string;
    copyOption: CopyOptions;
    draggable: boolean;
    textShadow: ShadowOptions | Array<ShadowOptions>;
    heightAdaptivePolicy: TextHeightAdaptivePolicy;
    textIndent: Length;
    wordBreak: WordBreak;
    lineBreakStrategy: LineBreakStrategy;
    onCopy: ((breakpoints: string) => void);
    caretColor: ResourceColor;
    selectedBackgroundColor: ResourceColor;
    ellipsisMode: EllipsisMode;
    enableDataDetector: boolean;
    dataDetectorConfig: TextDataDetectorConfig;
    onTextSelectionChange: ((first: number,last: number) => void);
    fontFeature: string;
    privacySensitive: boolean;
    textSelectable: TextSelectableMode;
    editMenuOptions: EditMenuOptions;
    halfLeading: boolean;
    enableHapticFeedback: boolean;


}
export enum TextSpanType {
    TEXT = 0,
    IMAGE = 1,
    MIXED = 2
}
export enum TextResponseType {
    RIGHT_CLICK = 0,
    LONG_PRESS = 1,
    SELECT = 2
}
export interface TextOptions {
    controller: TextController;
}
